package com.wh.service.impl;

import com.wh.dao.BaseDao;
import com.wh.dao.ext.WorkProjectTaskDao;
import com.wh.service.IExt.IWorkProjectTaskService;
import com.wh.model.BaseModel;

import com.wh.model.WorkProjectTask;
import com.legend.utils.*;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*
*author:徐洪昌
*blog:http://cnblogs.com/xusir
*datetime:2014-07-25 12:40:34
*/
public class WorkProjectTaskService extends BaseServiceImp implements IWorkProjectTaskService{

Logger log = Logger.getRootLogger();


private WorkProjectTaskService() {
}

//volatile修饰的写变量不能和之前的读写代码调整，读变量不能和之后的读写代码调整
private volatile static IWorkProjectTaskService instance = null;

/**
* 单例
*
* @return
*/
public static IWorkProjectTaskService getInstance() {
    if (instance == null) {
         synchronized (IWorkProjectTaskService.class) {
    if (instance == null) {
         instance = new WorkProjectTaskService();
         }
        }
    }
    return instance;
}

/**
*批量删除数据
*/
public ReturnResult delByIds(String ids) {
    SqlSession session = getSqlSession();
    ReturnResult result=new ReturnResult();
    try{
        WorkProjectTaskDao dao = session.getMapper(WorkProjectTaskDao.class);
        result= delByMap(dao,ids);
    }
    catch(Exception ex)
    {
        log.error(ex.getMessage());
    }
    finally{
        session.close();
    }
    return result;
}
/**
* 分页数据查询
* @param pageIndex
* @param pageSize
* @param map
* @return
*/
public ReturnResult selectByMap(int pageIndex, int pageSize,Map<String, Object> map) {
    SqlSession session = getSqlSession();
    WorkProjectTaskDao dao = session.getMapper(WorkProjectTaskDao.class);
    int recordNum=(pageIndex-1)*pageSize;
    List<WorkProjectTask> lst = session.selectList(ConfigUtils.getInstance().getDaoPackage(".WorkProjectTaskDao.selectByMap"), map, new RowBounds(recordNum, pageSize)) ;
    int total =dao.count(map);
    ReturnResult result = new ReturnResult();
    result.setMsg(i18nUtils.getVal("100001000"));
    result.setRows(lst);
    result.setTotal(total);
    result.setStatus(Status.SUCCESS);
    session.close();
    return result;
}
@Override
public ReturnResult insertByModel(BaseModel model) {
    SqlSession session = getSqlSession();
    WorkProjectTaskDao dao = session.getMapper(WorkProjectTaskDao.class);
    ReturnResult result= insertByModel(dao,model);
    session.close();
    return result;
}
@Override
public ReturnResult editByModel(BaseModel model) {
    SqlSession session = getSqlSession();
    WorkProjectTaskDao dao = session.getMapper(WorkProjectTaskDao.class);
    ReturnResult result = editByModel(dao,model);
    session.close();
    return result;
}
/**
* 根据ID获取一条数据
*
* @param id
* @return
*/
@Override
public ReturnResult selectById(String id) {
    SqlSession session = getSqlSession();
    ReturnResult result = new ReturnResult();
    result.setStatus(Status.ERROR);
    BaseDao dao = session.getMapper(WorkProjectTaskDao.class);
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", id);
    List<WorkProjectTask> lst = dao.selectByMap(map);
    if (lst.size() == 1) {
        result.setData(lst.get(0));
        result.setStatus(Status.SUCCESS);
    } else {
         result.setMsg(i18nUtils.getVal("100004000"));
    }
    session.close();
    return result;
}
/**
*批量审核数据
*
*/
public ReturnResult audit(int state,String[] idArr) {
    SqlSession session = getSqlSession();
    WorkProjectTaskDao dao = session.getMapper(WorkProjectTaskDao.class);
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("idArr", idArr);
    map.put("state", state);
    Integer num = dao.audit(map);
    ReturnResult result = new ReturnResult();
    if (num > 0) {
        result.setMsg(i18nUtils.getVal("100001000"));
        result.setStatus(Status.SUCCESS);
    }
    session.close();
    return result;
}

/**
* 排序
*
* @param sorts
* @param ids
* @return
*/
public ReturnResult sort(String sorts, String ids) {
    ReturnResult result;
    SqlSession session=getSqlSession();
    WorkProjectTaskDao dao=session.getMapper(WorkProjectTaskDao.class);
    result=  sort(session,dao,sorts,ids);
    if (session!=null)
         session.close();
    return result;
    }
}